<?php
/**
 * Created by PhpStorm.
 * User: aako
 * Date: 15-12-21
 * Time: 下午3:41
 */

namespace App\Repositories;

use App\Interfaces\CollectionService;
use App\Models\UserCollection;

class CollectionRepository implements CollectionService
{
    /**
     * 根据用户ID获取所有收藏内容
     * @param $user_id 用户ID
     * @return UserCollection
     */
    public function getUserCollection($user_id)
    {
        return UserCollection::where('user_id', '=', $user_id)->orderBy('add_time','desc')->simplePaginate(15);
    }

    /**
     * 记录用户收藏
     * @param $metadata 属性数组  {@link UserCollection}
     * @return id 新建收藏记录的ID
     */
    public function save($metadata)
    {
        $userCollection = UserCollection::create($metadata);
        return $userCollection->id;
    }

    /**
     * 取消收藏
     * @param $id 收藏记录ID
     * @return mixed
     */
    public function del($id)
    {
        $collection = UserCollection::find($id);
        return $collection->destory();
    }

    /**
     * 获取用户收藏分类的数量
     * @param $user_id 用户ID
     * @param $type 收藏类型（商品/品牌/店铺）
     * @return mixed
     */
    public function getNumOfUserCollectionByType($user_id, $type)
    {
        return UserCollection::where('user_id', '=', $user_id)->where('type', '=', $type)->count();
    }

    /**
     * 根据用户ID和收藏类型获取对应的内容
     * @param $user_id 用户ID
     * @param $type 收藏类型
     * @return UserCollection
     */
    public function getUserCollectionByType($user_id, $type)
    {
        return UserCollection::where('user_id', '=', $user_id)->where('type', '=', $type)->orderBy('add_time','desc')->simplePaginate(8);
    }
}